// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SVGNames_h
#define SVGNames_h

#include "core/CoreExport.h"
#include "core/dom/QualifiedName.h"
#include <memory>

namespace blink {

class SVGQualifiedName : public QualifiedName {
};

namespace SVGNames {

    // Namespace
    CORE_EXPORT extern const WTF::AtomicString& svgNamespaceURI;

    // Tags
    CORE_EXPORT extern const blink::SVGQualifiedName& aTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& animateTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& animateMotionTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& animateTransformTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& circleTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& clipPathTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& defsTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& descTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& discardTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& ellipseTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feBlendTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feColorMatrixTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feComponentTransferTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feCompositeTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feConvolveMatrixTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feDiffuseLightingTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feDisplacementMapTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feDistantLightTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feDropShadowTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feFloodTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feFuncATag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feFuncBTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feFuncGTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feFuncRTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feGaussianBlurTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feImageTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feMergeTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feMergeNodeTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feMorphologyTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feOffsetTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& fePointLightTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feSpecularLightingTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feSpotLightTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feTileTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& feTurbulenceTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& filterTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& foreignObjectTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& gTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& imageTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& lineTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& linearGradientTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& mpathTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& markerTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& maskTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& metadataTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& pathTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& patternTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& polygonTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& polylineTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& radialGradientTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& rectTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& svgTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& setTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& stopTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& switchTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& symbolTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& tspanTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& textTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& textPathTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& titleTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& useTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& viewTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& scriptTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& styleTag;
    CORE_EXPORT extern const blink::SVGQualifiedName& animateColorTag;

    // Attributes
    CORE_EXPORT extern const blink::QualifiedName& accent_heightAttr;
    CORE_EXPORT extern const blink::QualifiedName& accumulateAttr;
    CORE_EXPORT extern const blink::QualifiedName& additiveAttr;
    CORE_EXPORT extern const blink::QualifiedName& alignment_baselineAttr;
    CORE_EXPORT extern const blink::QualifiedName& alphabeticAttr;
    CORE_EXPORT extern const blink::QualifiedName& amplitudeAttr;
    CORE_EXPORT extern const blink::QualifiedName& animateAttr;
    CORE_EXPORT extern const blink::QualifiedName& arabic_formAttr;
    CORE_EXPORT extern const blink::QualifiedName& ascentAttr;
    CORE_EXPORT extern const blink::QualifiedName& attributeNameAttr;
    CORE_EXPORT extern const blink::QualifiedName& attributeTypeAttr;
    CORE_EXPORT extern const blink::QualifiedName& azimuthAttr;
    CORE_EXPORT extern const blink::QualifiedName& baseFrequencyAttr;
    CORE_EXPORT extern const blink::QualifiedName& baseProfileAttr;
    CORE_EXPORT extern const blink::QualifiedName& baseline_shiftAttr;
    CORE_EXPORT extern const blink::QualifiedName& bboxAttr;
    CORE_EXPORT extern const blink::QualifiedName& beginAttr;
    CORE_EXPORT extern const blink::QualifiedName& biasAttr;
    CORE_EXPORT extern const blink::QualifiedName& buffered_renderingAttr;
    CORE_EXPORT extern const blink::QualifiedName& byAttr;
    CORE_EXPORT extern const blink::QualifiedName& calcModeAttr;
    CORE_EXPORT extern const blink::QualifiedName& cap_heightAttr;
    CORE_EXPORT extern const blink::QualifiedName& clipAttr;
    CORE_EXPORT extern const blink::QualifiedName& clip_pathAttr;
    CORE_EXPORT extern const blink::QualifiedName& clip_ruleAttr;
    CORE_EXPORT extern const blink::QualifiedName& clipPathUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& colorAttr;
    CORE_EXPORT extern const blink::QualifiedName& color_interpolationAttr;
    CORE_EXPORT extern const blink::QualifiedName& color_interpolation_filtersAttr;
    CORE_EXPORT extern const blink::QualifiedName& color_renderingAttr;
    CORE_EXPORT extern const blink::QualifiedName& cursorAttr;
    CORE_EXPORT extern const blink::QualifiedName& cxAttr;
    CORE_EXPORT extern const blink::QualifiedName& cyAttr;
    CORE_EXPORT extern const blink::QualifiedName& dAttr;
    CORE_EXPORT extern const blink::QualifiedName& descentAttr;
    CORE_EXPORT extern const blink::QualifiedName& diffuseConstantAttr;
    CORE_EXPORT extern const blink::QualifiedName& directionAttr;
    CORE_EXPORT extern const blink::QualifiedName& displayAttr;
    CORE_EXPORT extern const blink::QualifiedName& divisorAttr;
    CORE_EXPORT extern const blink::QualifiedName& dominant_baselineAttr;
    CORE_EXPORT extern const blink::QualifiedName& durAttr;
    CORE_EXPORT extern const blink::QualifiedName& dxAttr;
    CORE_EXPORT extern const blink::QualifiedName& dyAttr;
    CORE_EXPORT extern const blink::QualifiedName& edgeModeAttr;
    CORE_EXPORT extern const blink::QualifiedName& elevationAttr;
    CORE_EXPORT extern const blink::QualifiedName& endAttr;
    CORE_EXPORT extern const blink::QualifiedName& exponentAttr;
    CORE_EXPORT extern const blink::QualifiedName& fillAttr;
    CORE_EXPORT extern const blink::QualifiedName& fill_opacityAttr;
    CORE_EXPORT extern const blink::QualifiedName& fill_ruleAttr;
    CORE_EXPORT extern const blink::QualifiedName& filterAttr;
    CORE_EXPORT extern const blink::QualifiedName& filterUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& flood_colorAttr;
    CORE_EXPORT extern const blink::QualifiedName& flood_opacityAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_familyAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_sizeAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_size_adjustAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_stretchAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_styleAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_variantAttr;
    CORE_EXPORT extern const blink::QualifiedName& font_weightAttr;
    CORE_EXPORT extern const blink::QualifiedName& formatAttr;
    CORE_EXPORT extern const blink::QualifiedName& frAttr;
    CORE_EXPORT extern const blink::QualifiedName& fromAttr;
    CORE_EXPORT extern const blink::QualifiedName& fxAttr;
    CORE_EXPORT extern const blink::QualifiedName& fyAttr;
    CORE_EXPORT extern const blink::QualifiedName& g1Attr;
    CORE_EXPORT extern const blink::QualifiedName& g2Attr;
    CORE_EXPORT extern const blink::QualifiedName& glyph_nameAttr;
    CORE_EXPORT extern const blink::QualifiedName& glyphRefAttr;
    CORE_EXPORT extern const blink::QualifiedName& gradientTransformAttr;
    CORE_EXPORT extern const blink::QualifiedName& gradientUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& hangingAttr;
    CORE_EXPORT extern const blink::QualifiedName& heightAttr;
    CORE_EXPORT extern const blink::QualifiedName& horiz_adv_xAttr;
    CORE_EXPORT extern const blink::QualifiedName& horiz_origin_xAttr;
    CORE_EXPORT extern const blink::QualifiedName& horiz_origin_yAttr;
    CORE_EXPORT extern const blink::QualifiedName& hrefAttr;
    CORE_EXPORT extern const blink::QualifiedName& ideographicAttr;
    CORE_EXPORT extern const blink::QualifiedName& image_renderingAttr;
    CORE_EXPORT extern const blink::QualifiedName& inAttr;
    CORE_EXPORT extern const blink::QualifiedName& in2Attr;
    CORE_EXPORT extern const blink::QualifiedName& interceptAttr;
    CORE_EXPORT extern const blink::QualifiedName& kAttr;
    CORE_EXPORT extern const blink::QualifiedName& k1Attr;
    CORE_EXPORT extern const blink::QualifiedName& k2Attr;
    CORE_EXPORT extern const blink::QualifiedName& k3Attr;
    CORE_EXPORT extern const blink::QualifiedName& k4Attr;
    CORE_EXPORT extern const blink::QualifiedName& kernelMatrixAttr;
    CORE_EXPORT extern const blink::QualifiedName& kernelUnitLengthAttr;
    CORE_EXPORT extern const blink::QualifiedName& keyPointsAttr;
    CORE_EXPORT extern const blink::QualifiedName& keySplinesAttr;
    CORE_EXPORT extern const blink::QualifiedName& keyTimesAttr;
    CORE_EXPORT extern const blink::QualifiedName& langAttr;
    CORE_EXPORT extern const blink::QualifiedName& lengthAdjustAttr;
    CORE_EXPORT extern const blink::QualifiedName& letter_spacingAttr;
    CORE_EXPORT extern const blink::QualifiedName& lighting_colorAttr;
    CORE_EXPORT extern const blink::QualifiedName& limitingConeAngleAttr;
    CORE_EXPORT extern const blink::QualifiedName& localAttr;
    CORE_EXPORT extern const blink::QualifiedName& marker_endAttr;
    CORE_EXPORT extern const blink::QualifiedName& marker_midAttr;
    CORE_EXPORT extern const blink::QualifiedName& marker_startAttr;
    CORE_EXPORT extern const blink::QualifiedName& markerHeightAttr;
    CORE_EXPORT extern const blink::QualifiedName& markerUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& markerWidthAttr;
    CORE_EXPORT extern const blink::QualifiedName& maskAttr;
    CORE_EXPORT extern const blink::QualifiedName& mask_typeAttr;
    CORE_EXPORT extern const blink::QualifiedName& maskContentUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& maskUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& mathematicalAttr;
    CORE_EXPORT extern const blink::QualifiedName& maxAttr;
    CORE_EXPORT extern const blink::QualifiedName& mediaAttr;
    CORE_EXPORT extern const blink::QualifiedName& methodAttr;
    CORE_EXPORT extern const blink::QualifiedName& minAttr;
    CORE_EXPORT extern const blink::QualifiedName& modeAttr;
    CORE_EXPORT extern const blink::QualifiedName& nameAttr;
    CORE_EXPORT extern const blink::QualifiedName& numOctavesAttr;
    CORE_EXPORT extern const blink::QualifiedName& offsetAttr;
    CORE_EXPORT extern const blink::QualifiedName& onactivateAttr;
    CORE_EXPORT extern const blink::QualifiedName& onbeginAttr;
    CORE_EXPORT extern const blink::QualifiedName& onendAttr;
    CORE_EXPORT extern const blink::QualifiedName& onfocusinAttr;
    CORE_EXPORT extern const blink::QualifiedName& onfocusoutAttr;
    CORE_EXPORT extern const blink::QualifiedName& onrepeatAttr;
    CORE_EXPORT extern const blink::QualifiedName& opacityAttr;
    CORE_EXPORT extern const blink::QualifiedName& operatorAttr;
    CORE_EXPORT extern const blink::QualifiedName& orderAttr;
    CORE_EXPORT extern const blink::QualifiedName& orientAttr;
    CORE_EXPORT extern const blink::QualifiedName& orientationAttr;
    CORE_EXPORT extern const blink::QualifiedName& originAttr;
    CORE_EXPORT extern const blink::QualifiedName& overflowAttr;
    CORE_EXPORT extern const blink::QualifiedName& overline_positionAttr;
    CORE_EXPORT extern const blink::QualifiedName& overline_thicknessAttr;
    CORE_EXPORT extern const blink::QualifiedName& paint_orderAttr;
    CORE_EXPORT extern const blink::QualifiedName& panose_1Attr;
    CORE_EXPORT extern const blink::QualifiedName& pathAttr;
    CORE_EXPORT extern const blink::QualifiedName& pathLengthAttr;
    CORE_EXPORT extern const blink::QualifiedName& patternContentUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& patternTransformAttr;
    CORE_EXPORT extern const blink::QualifiedName& patternUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& pointer_eventsAttr;
    CORE_EXPORT extern const blink::QualifiedName& pointsAttr;
    CORE_EXPORT extern const blink::QualifiedName& pointsAtXAttr;
    CORE_EXPORT extern const blink::QualifiedName& pointsAtYAttr;
    CORE_EXPORT extern const blink::QualifiedName& pointsAtZAttr;
    CORE_EXPORT extern const blink::QualifiedName& preserveAlphaAttr;
    CORE_EXPORT extern const blink::QualifiedName& preserveAspectRatioAttr;
    CORE_EXPORT extern const blink::QualifiedName& primitiveUnitsAttr;
    CORE_EXPORT extern const blink::QualifiedName& rAttr;
    CORE_EXPORT extern const blink::QualifiedName& radiusAttr;
    CORE_EXPORT extern const blink::QualifiedName& refXAttr;
    CORE_EXPORT extern const blink::QualifiedName& refYAttr;
    CORE_EXPORT extern const blink::QualifiedName& rendering_intentAttr;
    CORE_EXPORT extern const blink::QualifiedName& repeatCountAttr;
    CORE_EXPORT extern const blink::QualifiedName& repeatDurAttr;
    CORE_EXPORT extern const blink::QualifiedName& requiredExtensionsAttr;
    CORE_EXPORT extern const blink::QualifiedName& requiredFeaturesAttr;
    CORE_EXPORT extern const blink::QualifiedName& restartAttr;
    CORE_EXPORT extern const blink::QualifiedName& resultAttr;
    CORE_EXPORT extern const blink::QualifiedName& rotateAttr;
    CORE_EXPORT extern const blink::QualifiedName& rxAttr;
    CORE_EXPORT extern const blink::QualifiedName& ryAttr;
    CORE_EXPORT extern const blink::QualifiedName& scaleAttr;
    CORE_EXPORT extern const blink::QualifiedName& seedAttr;
    CORE_EXPORT extern const blink::QualifiedName& shape_renderingAttr;
    CORE_EXPORT extern const blink::QualifiedName& slopeAttr;
    CORE_EXPORT extern const blink::QualifiedName& spacingAttr;
    CORE_EXPORT extern const blink::QualifiedName& specularConstantAttr;
    CORE_EXPORT extern const blink::QualifiedName& specularExponentAttr;
    CORE_EXPORT extern const blink::QualifiedName& spreadMethodAttr;
    CORE_EXPORT extern const blink::QualifiedName& startOffsetAttr;
    CORE_EXPORT extern const blink::QualifiedName& stdDeviationAttr;
    CORE_EXPORT extern const blink::QualifiedName& stemhAttr;
    CORE_EXPORT extern const blink::QualifiedName& stemvAttr;
    CORE_EXPORT extern const blink::QualifiedName& stitchTilesAttr;
    CORE_EXPORT extern const blink::QualifiedName& stop_colorAttr;
    CORE_EXPORT extern const blink::QualifiedName& stop_opacityAttr;
    CORE_EXPORT extern const blink::QualifiedName& strikethrough_positionAttr;
    CORE_EXPORT extern const blink::QualifiedName& strikethrough_thicknessAttr;
    CORE_EXPORT extern const blink::QualifiedName& strokeAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_dasharrayAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_dashoffsetAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_linecapAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_linejoinAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_miterlimitAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_opacityAttr;
    CORE_EXPORT extern const blink::QualifiedName& stroke_widthAttr;
    CORE_EXPORT extern const blink::QualifiedName& styleAttr;
    CORE_EXPORT extern const blink::QualifiedName& surfaceScaleAttr;
    CORE_EXPORT extern const blink::QualifiedName& systemLanguageAttr;
    CORE_EXPORT extern const blink::QualifiedName& tableValuesAttr;
    CORE_EXPORT extern const blink::QualifiedName& targetAttr;
    CORE_EXPORT extern const blink::QualifiedName& targetXAttr;
    CORE_EXPORT extern const blink::QualifiedName& targetYAttr;
    CORE_EXPORT extern const blink::QualifiedName& text_anchorAttr;
    CORE_EXPORT extern const blink::QualifiedName& text_decorationAttr;
    CORE_EXPORT extern const blink::QualifiedName& text_renderingAttr;
    CORE_EXPORT extern const blink::QualifiedName& textLengthAttr;
    CORE_EXPORT extern const blink::QualifiedName& titleAttr;
    CORE_EXPORT extern const blink::QualifiedName& toAttr;
    CORE_EXPORT extern const blink::QualifiedName& transformAttr;
    CORE_EXPORT extern const blink::QualifiedName& transform_originAttr;
    CORE_EXPORT extern const blink::QualifiedName& typeAttr;
    CORE_EXPORT extern const blink::QualifiedName& u1Attr;
    CORE_EXPORT extern const blink::QualifiedName& u2Attr;
    CORE_EXPORT extern const blink::QualifiedName& underline_positionAttr;
    CORE_EXPORT extern const blink::QualifiedName& underline_thicknessAttr;
    CORE_EXPORT extern const blink::QualifiedName& unicodeAttr;
    CORE_EXPORT extern const blink::QualifiedName& unicode_bidiAttr;
    CORE_EXPORT extern const blink::QualifiedName& unicode_rangeAttr;
    CORE_EXPORT extern const blink::QualifiedName& units_per_emAttr;
    CORE_EXPORT extern const blink::QualifiedName& v_alphabeticAttr;
    CORE_EXPORT extern const blink::QualifiedName& v_hangingAttr;
    CORE_EXPORT extern const blink::QualifiedName& v_ideographicAttr;
    CORE_EXPORT extern const blink::QualifiedName& v_mathematicalAttr;
    CORE_EXPORT extern const blink::QualifiedName& valuesAttr;
    CORE_EXPORT extern const blink::QualifiedName& vector_effectAttr;
    CORE_EXPORT extern const blink::QualifiedName& versionAttr;
    CORE_EXPORT extern const blink::QualifiedName& vert_adv_yAttr;
    CORE_EXPORT extern const blink::QualifiedName& vert_origin_xAttr;
    CORE_EXPORT extern const blink::QualifiedName& vert_origin_yAttr;
    CORE_EXPORT extern const blink::QualifiedName& viewBoxAttr;
    CORE_EXPORT extern const blink::QualifiedName& visibilityAttr;
    CORE_EXPORT extern const blink::QualifiedName& widthAttr;
    CORE_EXPORT extern const blink::QualifiedName& widthsAttr;
    CORE_EXPORT extern const blink::QualifiedName& word_spacingAttr;
    CORE_EXPORT extern const blink::QualifiedName& writing_modeAttr;
    CORE_EXPORT extern const blink::QualifiedName& xAttr;
    CORE_EXPORT extern const blink::QualifiedName& x_heightAttr;
    CORE_EXPORT extern const blink::QualifiedName& x1Attr;
    CORE_EXPORT extern const blink::QualifiedName& x2Attr;
    CORE_EXPORT extern const blink::QualifiedName& xChannelSelectorAttr;
    CORE_EXPORT extern const blink::QualifiedName& yAttr;
    CORE_EXPORT extern const blink::QualifiedName& y1Attr;
    CORE_EXPORT extern const blink::QualifiedName& y2Attr;
    CORE_EXPORT extern const blink::QualifiedName& yChannelSelectorAttr;
    CORE_EXPORT extern const blink::QualifiedName& zAttr;
    CORE_EXPORT extern const blink::QualifiedName& zoomAndPanAttr;

    const unsigned SVGTagsCount = 65;
    CORE_EXPORT std::unique_ptr<const SVGQualifiedName*[]> getSVGTags();

    const unsigned SVGAttrsCount = 238;
    std::unique_ptr<const QualifiedName*[]> getSVGAttrs();

    void init();

} // SVGNames
} // namespace blink

#endif
